/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package energiebedrijf.Classes;

/**
 *
 * @author Robert
 */
import java.util.*;

public class Manager {
    private ManagerKlant klManager;
    private ManagerPerceel plManager;
    private ManagerAansluiting alManager;
    
    /**
     * Maakt een nieuw manager object aan, haalt alle objecten uit de database
     * en koppelt de objecten aan elkaar
     */
    public Manager() {
        //Maak nieuwe klant manager en haal alle klanten op uit de database.
        klManager = new ManagerKlant();
        plManager = new ManagerPerceel();
        alManager = new ManagerAansluiting();
        klManager.GetAll();
        plManager.GetAll();
                
        for (Klant k : klManager.getKlantLijst()) {
            //Haal percelen op
            ArrayList<Perceel> tmpPercelen = plManager.GetKlantPercelen(k.getKlantId());
            
            //Haal per perceel de aansluiting op
            for (Perceel p : tmpPercelen) {
                p.setKlant(k);
                p.setElectriciteit(alManager.GetElectraAansluiting(p.getPerceelId()));
                p.setGas(alManager.GetGasAansluiting(p.getPerceelId()));
                p.setWater(alManager.GetWaterAansluiting(p.getPerceelId()));
            }
            
            //Voeg perceel lijst aan klant toe
            k.setPerceelCollection(tmpPercelen);
        }
    }
    
    /**
     * Ververst alle data
     */
    public void RefreshData() {
        //Maak nieuwe klant manager en haal alle klanten op uit de database.
        klManager = new ManagerKlant();
        plManager = new ManagerPerceel();
        alManager = new ManagerAansluiting();
        klManager.GetAll();
        plManager.GetAll();
        alManager.GetAll();
                
        for (Klant k : klManager.getKlantLijst()) {
            //Haal percelen op
            ArrayList<Perceel> tmpPercelen = plManager.GetKlantPercelen(k.getKlantId());
            
            //Haal per perceel de aansluiting op
            for (Perceel p : tmpPercelen) {
                p.setKlant(k);
                p.setElectriciteit(alManager.GetElectraAansluiting(p.getPerceelId()));
                p.setGas(alManager.GetGasAansluiting(p.getPerceelId()));
                p.setWater(alManager.GetWaterAansluiting(p.getPerceelId()));
            }
            
            //Voeg perceel lijst aan klant toe
            k.setPerceelCollection(tmpPercelen);
        }
    }
    
    public void SaveAll() {
        //Sla alle klanten, percelen en aansluitingen op
        this.getAlManager().saveAll();
        this.getPLManger().saveAll();
        this.getKlManager().saveAll();
    }
        
    /**
     * Geeft het klant manager object terug
     * @return De klant manager
     */
    public ManagerKlant getKlManager() {
        return klManager;
    }

    /**
     * Stelt het klant manager object in
     * @param klManager
     */
    public void setKlManager(ManagerKlant klManager) {
        this.klManager = klManager;
    }
    
    /**
     * Geeft het perceel manager object terug
     * @return De perceel manager
     */
    public ManagerPerceel getPLManger() {
        return plManager;
    }
    
    /**
     * Stelt het Perceel manager object in
     * @param plManager
     */
    public void setPLManager (ManagerPerceel plManager) {
        this.plManager = plManager;
    }

    public ManagerAansluiting getAlManager() {
        return alManager;
    }

    public void setAlManager(ManagerAansluiting alManager) {
        this.alManager = alManager;
    }
}

